TOP

SQL FULL OUTER JOIN 关键字

SQL FULL OUTER JOIN 描述

如果表的左侧 (table1) 或右侧 (table2) 记录中有匹配项,则关键字 FULL OUTER JOIN 返回所有记录。


指令 FULL OUTER JOINFULL JOIN 是相同的。

FULL OUTER JOIN 语法

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition

SQL FULL JOIN

演示数据库

在本教程中,我们将使用著名的示例数据库“Northwind”。

以下是表“Customers”(“客户”)中的示例:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

以及表“Orders”(“订单”)中的示例:

ProductIDOrderIDCustomerIDEmployeeIDOrderDateShipperID
1102489051996-07-043
2102498161996-07-051
3102503441996-07-082
4102518431996-07-081
5102527641996-07-092

SQL FULL OUTER JOIN 示例

以下 SQL 语句选择所有客户和所有订单:

Run SQLSELECT Customers.CustomerName, Orders.OrderID 
FROM Customers 
FULL OUTER JOIN Orders ON Customers.CustomerID = Orders.CustomerID 
ORDER BY Customers.CustomerName

结果集中的示例可能如下所示:

CustomerName OrderID
Null 10309
Null 10310
Alfreds Futterkiste Null
Ana Trujillo Emparedados y helados 10308
Antonio Moreno Taquería Null
关键字 FULL OUTER JOIN 返回两个表中的所有匹配记录,无论另一个表是否匹配。 因此,如果“Customers”(“客户”)中的某些行在“Orders”(“订单”)中没有匹配项,或者“订单”中的某些行在“客户”中没有匹配项,则这些行也会被删除。将被列出。